01
构建系统概述
为什么嵌入式项目需要构建系统?Makefile与CMake的定位与区别,核心概念(目标、依赖、规则)。
概念入门
02
Makefile基础入门
基本语法,目标、依赖与规则编写,第一个Hello World Makefile。
语法实战
03
Makefile变量与自动变量
变量定义与引用,自动变量 $@, $^, $<, $? 深入理解与实战。
变量自动
04
Makefile条件判断与函数
ifeq, ifdef 条件判断,patsubst, wildcard, foreach, call 函数详解。
条件函数
05
Makefile多目标与伪目标
多目标编译,.PHONY伪目标,clean, all 等编写规范。
伪目标规范
06
Makefile隐式规则与模式匹配
隐式规则原理,模式规则 %.o: %.c,VPATH 与 vpath 使用。
模式VPATH
07
Makefile实战:嵌入式C项目
多目录多文件项目,自动生成依赖,增量编译实现。
实战增量
08
Makefile进阶:静态库与共享库
静态库(.a)与共享库(.so)构建链接,库依赖管理。
库链接
09
Makefile进阶:交叉编译配置
交叉编译工具链配置,CFLAGS/LDFLAGS传递,sysroot使用。
交叉编译工具链
10
Makefile调试与优化
make调试选项 --debug, -d,性能优化,避免重复编译。
调试优化
11
CMake基础入门
CMake哲学与设计,CMakeLists.txt结构,cmake_minimum_required, project, add_executable。
CMake入门
12
CMake变量与缓存
变量定义与作用域,缓存变量 set CACHE,预设变量 CMAKE_C_COMPILER 等。
变量缓存
13
CMake目标与属性
目标概念,target_include_directories, target_link_libraries, target_compile_definitions。
目标属性
14
CMake生成器与构建类型
Generator概念,Debug/Release/RelWithDebInfo/MinSizeRel配置切换。
生成器类型
15
CMake条件与循环
if/elseif/else/endif,foreach循环,list操作,数学表达式。
条件循环
16
CMake函数与宏
function与macro定义区别,参数传递,返回值,模块化设计。
函数宏
17
CMake查找包
find_package机制,Find模块编写,Config文件生成与使用。
包管理find
18
CMake实战:嵌入式C项目
多目录项目,add_subdirectory,目标间依赖管理。
实战子目录
19
CMake进阶:静态库与共享库
add_library模式 STATIC, SHARED, OBJECT, INTERFACE,库导出安装。
库安装
20
CMake进阶:交叉编译工具链文件
toolchain.cmake编写,CMAKE_SYSTEM_NAME, CMAKE_SYSTEM_PROCESSOR配置。
交叉编译工具链
21
CMake进阶:自定义命令与目标
add_custom_command, add_custom_target,生成源文件、后处理。
自定义命令
22
CMake进阶:测试与CTest
enable_testing, add_test,CTest配置运行,测试覆盖率。
测试CTest
23
CMake进阶:安装与打包
install命令,CPack配置,生成deb/rpm/tar.gz安装包。
安装打包
24
CMake与IDE集成
VS Code, CLion, Eclipse集成,compile_commands.json生成。
IDE集成
25
CMake与Makefile混合使用
CMake中调用Makefile,Makefile中调用CMake,过渡策略与最佳实践。
混合策略
26
构建系统性能优化
并行编译 make -j, CMAKE_BUILD_PARALLEL_LEVEL,ccache,预编译头文件。
性能ccache
27
构建系统安全与规范
构建目录与源目录分离,权限管理,版本控制,CI/CD实践。
安全CI/CD
28
构建系统调试与排错
常见错误解析(链接错误、未定义引用、循环依赖),日志分析,调试技巧。
调试排错
29
构建系统扩展与自定义
自定义构建工具,集成代码生成器,构建后自动部署与烧录。
扩展自动化
30
综合实战:从零构建完整嵌入式项目
需求分析,目录结构设计,Makefile与CMake双方案,持续集成配置,项目总结。
综合实战